package com.turing.post.transaction.util;

import java.io.Serializable;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 商户交易参数类
 * @author ZXL
 *
 */
@SuppressWarnings("serial")
public final class MrchTransParam implements Serializable {
	/**
	 * 当前系统时间
	 */
	public java.util.Date curSysDateTime = null;

	/**
	 * 发卡商
	 */
	public String issueCompanyNo = null;
	
	/**
	 * 商户号
	 */
	public String merchantNo = null;

	/**
	 * 商户帐务日期
	 */
	public java.util.Date tranDate = null;

	/**
	 * 商户取消帐务日期
	 */
	public java.util.Date cancelTranDate = null;

	/**
	 * 商户交易流水号(如为POS,则为POS号+POS批次号+POS流水号)
	 */
	public String mrchReqSeqNo = null;

	/**
	 * 商户取消交易流水号
	 */
	public String cancelMrchReqSeqNo = null;

	/**
	 * POS号(POS商户必选)
	 */
	public String mrchPosNo = null;

	/**
	 * POS批次号(POS商户必选)
	 */
	public String mrchPosBatchNo = null;

	/**
	 * POS流水号(POS商户必选)
	 */	
	public String mrchPosSeqNo = null;
	
	/**
	 * 商户机构号(可选)
	 */
	public String mrchBrchNo = null;

	/**
	 * 商户机构名称(可选)
	 */
	public String mrchBrchName = null;

	/**
	 * 商户柜员号(可选)
	 */
	public String mrchTellerNo = null;

	/**
	 * 商户柜员姓名(可选)
	 */
	public String mrchTellerName = null;

	/**
	 * 交易摘要(可选)
	 */
	public String mrchAbstract = null;

	/**
	 * 交易流水号 -- 生成的(12位)
	 */
	public String tranSeqNo = null;

	/**
	 * 取消交易流水号
	 */
	public String cancelTranSeqNo = null;

	/**
	 * 会员卡号
	 */
	public String membershipCardNo = null;

	/**
	 * 会员卡支付密码
	 */
	public String membershipCardPwd = null;
	
	/**
	 * 会员卡积分余额
	 */
	public BigInteger score = BigInteger.ZERO;
	
	/**
	 * 会员卡积分发生额(产生的积分)
	 */
	public BigInteger scoreAmount = BigInteger.ZERO;
	
	/**
	 * 合计发生额(支付合计,合计预付卡扣款总额)(取消/冲正时,为原交易的卡支付合计+会员支付额)
	 */
	public BigInteger totalAmount = BigInteger.ZERO;

	/**
	 * 其他支付发生额
	 */
	public BigInteger otherPaidAmount = BigInteger.ZERO;

	/**
	 * 会员卡支付额
	 */
	public BigInteger scorePaidAmount = BigInteger.ZERO;
	
	/**
	 * 实际会员卡支付额
	 */
	public BigInteger factScorePaidAmount = BigInteger.ZERO;

	/**
	 * 卡支付列表
	 */
	public class CardAccount implements Serializable{
		/**
		 * 卡号
		 */
		public String cardNo = null;
		
		/**
		 * 2磁道
		 */
		public String track2 = null;
		
		/**
		 * 3磁道
		 */
		public String track3 = null;
		
		/**
		 * 密码
		 */
		public String cardPwd = null;
		
		/**
		 * 发生额
		 */
		public BigInteger amount = BigInteger.ZERO;
		
		/**
		 * 手续费(>0)或折扣(<0)
		 */
		public BigInteger fee = BigInteger.ZERO;
		
		/**
		 * 余额
		 */
		public BigInteger balance = BigInteger.ZERO;
		
		/**
		 * 充值限额
		 */
		public BigInteger depositLimit = BigInteger.ZERO;
	}

	/**
	 * 待记帐的卡列表
	 */
	public Map<String, CardAccount> cardAccMap = new HashMap<String, CardAccount>();
	
	/**
	 * 待充值的卡记帐信息
	 */
	public CardAccount depositCard = new CardAccount();
	
	/**
	 * 代理充值的销售机构号 -- 2013.07.15 removed
	 */
	//public String depositSaleBranchNo = null;
	
	/**
	 * 附加信息
	 */
	public List<MchAddTradDetail> matdlist = new ArrayList<MchAddTradDetail>();
	
	/**
	 * 代理操作员号
	 */
	public BigInteger OperId = null;
	
	/**
	 * 借方笔数
	 */
	public BigInteger debitCount = BigInteger.ZERO;

	/**
	 * 借方金额
	 */
	public BigInteger debitAmount = BigInteger.ZERO;

	/**
	 * 贷方笔数
	 */
	public BigInteger creditCount = BigInteger.ZERO;

	/**
	 * 贷方金额
	 */
	public BigInteger creditAmount = BigInteger.ZERO;
}
